package com.erju.utils;

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;

/**
 * @Description: 加密工具类
 * @author: 86132
 * @date: 2022.03.08
 */
public class JasyptUtil {

    //加密
    public static String setPass(String str) {
        //加密工具
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        //加密配置
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        //基本默认都是使用这个"PBEWithMD5AndDES"
        config.setAlgorithm("PBEWithMD5AndDES");
        //这里你可以加入你想要的盐salt
        config.setPassword("SLab");
        //应用配置
        encryptor.setConfig(config);
        //需要加密的密码
        String plaintext = str;
        //加密
        String ciphertext = encryptor.encrypt(plaintext);
        return ciphertext;
    }

    //解密
    public static String getPass(String str) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        //加密配置
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        //这里的参数默认为PBEWithMD5AndDES，可以找到JasyptEncryptorConfigurationProperties类中看默认的
        config.setAlgorithm("PBEWithMD5AndDES");
        //这里的参数为salt，也就是在配置文件中jasypt.encryptor.password中填写的值
        config.setPassword("SLab");
        //应用配置
        encryptor.setConfig(config);
        //这里的参数为数据库连接上的password，如ENC(eidumReGpawkCC3QaEadJMbLXB2JgnQg)，需要去掉ENC()
        String ciphertext = str;
        //解密
        String plaintext = encryptor.decrypt(ciphertext);
        return plaintext;
    }
}
